// plugin/gatsby-transformer-xml/gatsby-node.js
const { parseString } = require('xml2js')
const { promisify } = require('util')
const parse = promisify(parseString)
const createNodeHelpers = require('gatsby-node-helpers').default

async async function onCreateNode ({ node, loadNodeContent, actions }) {
    const { createNode } = actions
    // 判断 node 是否是需要转换的节点
    if (node.internal.mediaType === 'application/xml') {
        // loadNodeContent 方法返回节点内容
        let content = await loadNodeContent(node)
        // 使用 xml2js 提供的 parseString 将 xml 转换为 js
        // explicitArray 是否总是放在数组中 explicitRoot 是否获取根节点
        let obj = await parse(content, { explicitArray: false, explicitRoot: false })
        // 将数据添加到数据层中  使用 gatsby-node-helpers 插件
        const { createNodeFactory } = createNodeHelpers({
            typePrefix: 'XML'
        })
        // 指定节点名
        const createNodeObject = createNodeFactory('parsedContent') // allParsedCOntent
        // 构建节点对象
        createNode(createNodeObject(obj))
    }
}

module.export = {
    onCreateNode
}